import request from "../../utils/request"  // 导入ajax请求函数
Page({

  /**
   * 页面的初始数据
   */
  data: {
    bannerList: [],// 轮播图数据
    recommendList: [],// 推荐歌单的数据
    topList: [],// 排行榜数据
  },

  /**
   * 生命周期函数--监听页面加载
   */
  /*async
    作为一个关键字放在函数的前面，表示该函数是一个异步函数，意味着该函数的执行不会阻塞后面代码的执行 异步函数的调用跟普通函数一样
    async的内部实现原理就是如果该函数中有一个返回值，当调用该函数时，默认会在内部调用Promise.solve() 方法把它转化成一个Promise 
    对象作为返回，若函数内部抛出错误，则调用Promise.reject()返回一个Promise 对象
  await
    await即等待，用于等待一个Promise对象。它只能在异步函数 async function中使用，否则会报错
    它的返回值不是Promise对象而是Promise对象处理之后的结果
    await表达式会暂停当前 async function的执行，等待Promise 处理完成。若 Promise 正常处理(fulfilled)，其回调的resolve函数参数作为 
    await 表达式的值，继续执行 async function，若 Promise 处理异常(rejected)，await 表达式会把 Promise 的异常原因抛出。​如果 await
     操作符后的表达式的值不是一个 Promise，那么该值将被转换为一个已正常处理的 Promise。
    */
  onLoad: async function (options) {
    //1. 获取轮播图的数据
    // 发送ajax请求 1.url 2. 可选参数 0 pc数据 1 安卓 2 苹果  3.请求方法（默认GET）
    let bannerListData = await request('/banner', { type: 2 });
    this.setData({
      bannerList: bannerListData.banners
    })

    // 2.获取推荐歌单的数据   可选参数 : limit: 取出数量 , 默认为 30 (不支持 offset)
    let recommendList = await request('/personalized', { limit: 10 });
    this.setData({
      recommendList: recommendList.result
    })

    // 3.获取排行榜数据
    /*
 * 需求分析：
 *      1. 需要根据idx的值获取对应的数据
 *      2. idx的取值范围是0-20，我们需要0-4
 *      3. 需要发送5次请求
 **/
    let index = 0;
    let resultArr = [];
    while (index < 5) {
      let topListData = await request('/top/list', { idx: index++ });
      //   从数组中获取数据的方法: splice(会修改原数组，可以对指定的数据进行增删改)  slice(不会修改原数组)
      // name 标题   tracks 内容数据
      let topListItem = { name: topListData.playlist.name, tracks: topListData.playlist.tracks.slice(0, 3) }
      resultArr.push(topListItem);
      // 放在这里不需要等待五次请求全部结束才更新,用户体验较好,但是渲染的次数会多一点
      this.setData({
        topList: resultArr
      })
    }
    // 更新topList的状态值,放在此处更新会导致发送请求的过程中页面长时间白屏,用户体验差
    // this.setData({
    //   topList:resultArr
    // })

  },
// 跳转每日推荐界面
toRecommendSong(){
  wx.navigateTo({
    url:"/songPackage/pages/recommendSong/recommendSong"
  })
},
// 跳转至other页面
toOther(){
  wx.navigateTo({
    url:"/otherPackage/pages/other/other"
  })
},
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})